home *** CD-ROM | disk | FTP | other *** search
- package Local.Game.World.Map
- {
- import Local.Game.Thing.*;
- import Local.Game.World.*;
- import Local.Game.World.Map.Cell.*;
- import flash.events.*;
- import flash.geom.*;
-
- public class CMap
- {
-
- public static const mCellSize:int = CCell.mSize;
-
- public static const mBloatCells:Number = mCellSize * 3;
-
- public static const mPadCells:Number = 3;
-
- public static const mCellScalar:Number = 1 / mCellSize;
-
-
- private var mCells:Array;
-
- public var mWorldWidth:int;
-
- private var mDumbMax:CCell;
-
- public var mWidth:int;
-
- private var mDumbMin:CCell;
-
- public function CMap(param1:CLandscape)
- {
- var _loc2_:int = 0;
- super();
- mWidth = Math.ceil(param1.mWidth * mCellScalar);
- mWorldWidth = mWidth * mCellSize;
- mCells = new Array();
- _loc2_ = 0;
- loop0:
- while(true)
- {
- §§push(_loc2_);
- §§push(mWidth);
- if(false)
- {
- break;
- }
- if(§§pop() >= §§pop())
- {
- mDumbMin = new CCell(-1,[param1.GetAltitude(0)]);
- mDumbMax = new CCell(mWidth,[param1.GetAltitude(mWidth * mCellSize - 1)]);
- mDumbMin.mDumbCell = mDumbMax.mDumbCell = true;
- _loc2_ = 0;
- while(true)
- {
- §§push(_loc2_);
- §§push(mWidth);
- break loop0;
- addr95:
- mCells[_loc2_].mNext = _loc2_ + 1 >= mWidth ? null : mCells[_loc2_ + 1];
- mCells[_loc2_].mPrev = _loc2_ - 1 < 0 ? null : mCells[_loc2_ - 1];
- _loc2_++;
- }
- addr141:
- return;
- addr138:
- }
- mCells.push(new CCell(_loc2_,param1.GetAltitudesQ(_loc2_ * mCellSize,(_loc2_ + 1) * mCellSize)));
- _loc2_++;
- }
- while(true)
- {
- if(§§pop() >= §§pop())
- {
- §§goto(addr141);
- }
- else
- {
- §§goto(addr95);
- }
- }
- }
-
- public function InMapX(param1:Number) : Boolean
- {
- §§push(param1);
- if(true)
- {
- §§push(0);
- if(true)
- {
- return §§pop() >= §§pop() && param1 < mWorldWidth;
- }
- }
- §§goto(addr21);
- }
-
- public function RemoveRefThing(param1:*, param2:CCell) : void
- {
- if(true)
- {
- param2.RemoveRefThing(param1);
- }
- }
-
- public function RemoveThing(param1:*, param2:CCell) : void
- {
- if(true)
- {
- param2.RemoveThing(param1);
- }
- }
-
- public function GetCellAt(param1:Number) : CCell
- {
- if(true)
- {
- return param1 < 0 ? mDumbMin : (param1 >= mWorldWidth ? mDumbMax : mCells[Math.floor(param1 * mCellScalar)]);
- }
- §§goto(addr27);
- }
-
- public function AddThing(param1:CThingMap) : CCell
- {
- var _loc2_:CCell = null;
- _loc2_ = GetCellAt(param1.GetPosition().x);
- _loc2_.AddThing(param1);
- return _loc2_;
- }
-
- public function GetDrawThings(param1:Number, param2:Number) : Object
- {
- var _loc3_:Object = null;
- var _loc4_:* = undefined;
- var _loc5_:Array = null;
- var _loc6_:CCell = null;
- _loc3_ = new Object();
- _loc5_ = GetCells(param1,param2);
- if(param1 < 0)
- {
- _loc5_.push(mDumbMin);
- }
- if(param2 >= mWidth * mCellSize)
- {
- _loc5_.push(mDumbMax);
- }
- for each(_loc6_ in _loc5_)
- {
- if(true)
- {
- §§push(0);
- if(true)
- {
- for each(_loc4_ in _loc6_.mMapwho)
- {
- _loc3_[_loc4_.nID] = _loc4_;
- }
- §§push(0);
- }
- for each(_loc4_ in _loc6_.rMapwho)
- {
- _loc3_[_loc4_.nID] = _loc4_;
- }
- }
- }
- return _loc3_;
- }
-
- public function InMap(param1:Number, param2:Number) : Boolean
- {
- if(true)
- {
- §§push(param1);
- §§push(0);
- if(true)
- {
- §§push(§§pop() >= §§pop());
- if(true)
- {
- if(§§pop())
- {
- if(true)
- {
- §§pop();
- if(true)
- {
- §§push(param1);
- §§push(mWorldWidth);
- if(true)
- {
- §§push(§§pop() < §§pop());
- if(true)
- {
- addr39:
- §§push(§§pop() && param2 >= 0);
- }
- if(§§pop())
- {
- addr54:
- §§pop();
- §§goto(addr58);
- }
- addr58:
- return param2 < 500;
- }
- }
- §§goto(addr44);
- }
- §§goto(addr54);
- }
- §§goto(addr39);
- }
- }
- }
- §§goto(addr54);
- }
-
- public function GetCells(param1:Number, param2:Number) : Array
- {
- if(true)
- {
- if(param1 > param2)
- {
- if(true)
- {
- param2 = Math.max(0,Math.floor(param2 * mCellScalar));
- if(true)
- {
- param1 = Math.min(mWidth - 1,Math.floor(param1 * mCellScalar));
- if(true)
- {
- §§push(param2);
- §§push(mWidth);
- if(true)
- {
- §§push(§§pop() >= §§pop());
- §§push(§§pop() >= §§pop());
- if(true)
- {
- if(!§§pop())
- {
- §§pop();
- if(true)
- {
- §§push(param1);
- §§push(0);
- if(true)
- {
- return (§§pop() < §§pop() ? [] : mCells.slice(param2,param1 + 1)).reverse();
- addr65:
- }
- }
- else
- {
- addr78:
- param1 = Math.max(0,Math.floor(param1 * mCellScalar));
- addr88:
- param2 = Math.min(mWidth - 1,Math.floor(param2 * mCellScalar));
- §§push(param1);
- §§push(mWidth);
- }
- return §§pop() >= §§pop() || param2 < 0 ? [] : mCells.slice(param1,param2 + 1);
- addr103:
- }
- §§goto(addr65);
- }
- §§goto(addr103);
- }
- §§goto(addr107);
- }
- }
- §§goto(addr88);
- }
- §§goto(addr107);
- }
- §§goto(addr78);
- }
- §§goto(addr109);
- }
-
- public function AddRefThing(param1:CThingMap) : CCell
- {
- var _loc2_:CCell = null;
- _loc2_ = GetCellAt(param1.GetPosition().x);
- _loc2_.AddRefThing(param1);
- return _loc2_;
- }
-
- public function GetThings(param1:Number, param2:Number) : Array
- {
- var _loc3_:Array = null;
- var _loc4_:CCell = null;
- var _loc5_:* = undefined;
- _loc3_ = new Array();
- for each(_loc4_ in GetCells(param1,param2))
- {
- for each(_loc5_ in _loc4_.mMapwho)
- {
- _loc3_.push(_loc5_);
- }
- }
- return _loc3_;
- }
- }
- }
-